MediaWiki

Common.js:修订间差异

来自卡厄思梦境WIKI

律Rhyme留言 | 贡献
无编辑摘要
律Rhyme留言 | 贡献
无编辑摘要
第1行: 第1行:
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */


// 切换标签
/* 切换标签 */
(function() {
(function() {
     'use strict';
     'use strict';
第73行: 第73行:
})();
})();


// 战斗员筛选系统
/* 战斗员筛选 */
$(function() {
$(function() {
    if ($('#character-filter-system').length === 0) return;
     // 初始化筛选系统
   
     function initFilterSystem() {
     // 存储当前筛选条件
         // 为所有战斗员卡片添加数据属性
     var currentFilters = {
         $('.战斗员卡片').each(function() {
         rarity: 'all',
            var $card = $(this);
        class: 'all',
            var name = $card.find('.战斗员名称').text();
        attribute: 'all'
            var rarity = $card.find('[class*="rarity-"]').attr('class').match(/rarity-(\S+)/)[1];
    };
            var profession = $card.find('img[src*="icon_职业"]').attr('src').match(/icon_职业_(.+?)\.png/)[1];
   
            var attribute = $card.find('img[src*="icon_属性"]').attr('src').match(/icon_属性_(.+?)\.png/)[1];
    // 定义颜色
              
    var colors = {
             $card.attr({
        normal: '#6c757d',
                 'data-name': name,
        active: '#007bff',
                 'data-rarity': rarity,
         hover: '#0056b3',
                 'data-profession': profession,
        reset: '#dc3545',
                 'data-attribute': attribute
        resetHover: '#c82333'
    };
   
    // 初始化 - 设置默认"全部"按钮为激活状态
    $('.filter-btn[data-value="all"]').each(function() {
        $(this).css('background-color', colors.active);
    });
   
    // 初始化统计
    updateStats();
   
    // 筛选按钮点击事件
    $('.filter-btn').on('click', function() {
        var filterType = $(this).data('filter');
        var filterValue = $(this).data('value');
       
        // 更新当前筛选条件
        currentFilters[filterType] = filterValue;
       
        // 只将同类型的所有按钮设置为灰色
        $('.filter-btn[data-filter="' + filterType + '"]').css('background-color', colors.normal);
       
        // 然后将当前点击的按钮设置为蓝色
        $(this).css('background-color', colors.active);
       
        // 执行筛选
        applyFilters();
    });
   
    // 筛选按钮悬停效果
    $('.filter-btn').on('mouseenter', function() {
        var currentBg = $(this).css('background-color');
        $(this).data('original-bg', currentBg);
       
        // 转换RGB颜色值进行比较
        var rgbNormal = 'rgb(108, 117, 125)';
        var rgbActive = 'rgb(0, 123, 255)';
       
        if (currentBg === rgbNormal) {
            $(this).css({
                'background-color': colors.hover,
                'transform': 'scale(1.05)',
                'transition': 'all 0.2s ease',
                'position': 'relative',
                'z-index': '1'
            });
        } else if (currentBg === rgbActive) {
             // 如果是激活状态,只添加缩放效果
             $(this).css({
                 'transform': 'scale(1.05)',
                 'transition': 'all 0.2s ease',
                 'position': 'relative',
                 'z-index': '1'
             });
             });
        }
    }).on('mouseleave', function() {
        var originalBg = $(this).data('original-bg');
        $(this).css({
            'background-color': originalBg || $(this).css('background-color'),
            'transform': 'scale(1)',
            'transition': 'all 0.2s ease',
            'z-index': 'auto'
         });
         });
    });
   
    // 重置按钮
    $('#reset-filters').on('click', function() {
        // 重置筛选条件
        currentFilters = {
            rarity: 'all',
            class: 'all',
            attribute: 'all'
        };
          
          
         // 重置所有按钮样式 - 每组的"全部"按钮设为激活
         // 存储当前筛选状态
         $('.filter-btn').css('background-color', colors.normal);
         var activeFilters = {};
        $('.filter-btn[data-value="all"]').css('background-color', colors.active);
       
        // 显示所有角色
        $('.character-card').show();
       
        // 隐藏筛选显示
        $('#current-filters').hide();
       
        // 更新统计
        updateStats();
    });
   
    // 重置按钮悬停效果
    $('#reset-filters').on('mouseenter', function() {
        $(this).css({
            'background-color': colors.resetHover,
            'transform': 'scale(1.05)',
            'transition': 'all 0.2s ease'
        });
    }).on('mouseleave', function() {
        $(this).css({
            'background-color': colors.reset,
            'transform': 'scale(1)',
            'transition': 'all 0.2s ease'
        });
    });
   
    // 应用筛选
    function applyFilters() {
        var hasFilter = false;
        var filterText = [];
        var visibleCount = 0;
          
          
         $('.character-card').each(function() {
        // 筛选按钮点击事件
             var $card = $(this);
         $('.filter-button').on('click', function() {
             var show = true;
             var $button = $(this);
             var group = $button.data('filter-group');
            var value = $button.data('filter-value');
              
              
             // 检查稀有度
             // 切换按钮状态
             if (currentFilters.rarity !== 'all') {
             if (group == '0' && value == '0') {
                 var cardRarity = String($card.data('rarity'));
                // 查看全部按钮
                 var filterRarity = String(currentFilters.rarity);
                $('.filter-button').removeClass('active');
                 if (cardRarity !== filterRarity) {
                $button.addClass('active');
                     show = false;
                activeFilters = {};
            } else {
                 // 其他筛选按钮
                $('.filter-button[data-filter-group="0"]').removeClass('active');
               
                // 同组内只能选择一个
                $('.filter-button[data-filter-group="' + group + '"]').removeClass('active');
               
                if (activeFilters[group] === value) {
                    // 如果点击已激活的按钮,则取消选择
                    delete activeFilters[group];
                 } else {
                    // 激活新的筛选
                    $button.addClass('active');
                    activeFilters[group] = value;
                }
               
                // 如果没有任何筛选项,激活"查看全部"
                 if (Object.keys(activeFilters).length === 0) {
                     $('.filter-button[data-filter-group="0"]').addClass('active');
                 }
                 }
                hasFilter = true;
             }
             }
              
              
             // 检查职业
             // 应用筛选
             if (currentFilters.class !== 'all') {
             applyFilters();
                var cardClass = String($card.data('class'));
        });
                var filterClass = String(currentFilters.class);
       
                if (cardClass !== filterClass) {
        // 应用筛选函数
                    show = false;
        function applyFilters() {
            $('.战斗员卡片').each(function() {
                var $card = $(this);
                var shouldShow = true;
               
                // 检查每个激活的筛选条件
                for (var group in activeFilters) {
                    var filterValue = activeFilters[group];
                    var cardValue = '';
                   
                    // 根据组号获取对应的卡片属性
                    switch(group) {
                        case '1': // 稀有度
                            cardValue = $card.data('rarity');
                            break;
                        case '2': // 职业
                            cardValue = $card.data('profession');
                            break;
                        case '3': // 属性
                            cardValue = $card.data('attribute');
                            break;
                        // 可以继续添加更多筛选组
                        default:
                            cardValue = $card.data('filter-' + group);
                    }
                   
                    if (cardValue !== filterValue) {
                        shouldShow = false;
                        break;
                    }
                 }
                 }
                 hasFilter = true;
                  
             }
                // 显示或隐藏卡片
                if (shouldShow) {
                    $card.fadeIn(200);
                } else {
                    $card.fadeOut(200);
                }
             });
              
              
             // 检查属性
             // 更新显示数量
             if (currentFilters.attribute !== 'all') {
             updateCount();
                var cardAttribute = String($card.data('attribute'));
        }
                var filterAttribute = String(currentFilters.attribute);
       
                if (cardAttribute !== filterAttribute) {
        // 更新显示数量
                    show = false;
        function updateCount() {
                }
            var visibleCount = $('.战斗员卡片:visible').length;
                hasFilter = true;
            var totalCount = $('.战斗员卡片').length;
            }
              
              
            // 显示或隐藏卡片
             if ($('#filter-count').length === 0) {
             if (show) {
                 $('.filter-container').prepend('<div id="filter-count"></div>');
                 $card.show();
                visibleCount++;
            } else {
                $card.hide();
             }
             }
        });
       
        // 更新筛选条件显示
        if (hasFilter) {
            if (currentFilters.rarity !== 'all') filterText.push('稀有度:' + currentFilters.rarity);
            if (currentFilters.class !== 'all') filterText.push('职业:' + currentFilters.class);
            if (currentFilters.attribute !== 'all') filterText.push('属性:' + currentFilters.attribute);
              
              
             $('#filter-display').text(filterText.join(' | '));
             $('#filter-count').text('显示 ' + visibleCount + ' / ' + totalCount + ' 个战斗员');
            $('#current-filters').show();
        } else {
            $('#current-filters').hide();
         }
         }
          
          
         // 立即更新统计
         // 初始化时激活"查看全部"按钮
         updateStats();
         $('.filter-button[data-filter-group="0"]').addClass('active');
       
         updateCount();
        // 调试信息
        console.log('当前筛选条件:', currentFilters);
         console.log('可见卡片数量:', visibleCount);
     }
     }
      
      
     // 更新统计信息
     // 页面加载完成后初始化
     function updateStats() {
     if ($('.filter-button').length > 0) {
        var visibleCount = $('.character-card:visible').length;
         initFilterSystem();
        var totalCount = $('.character-card').length;
         $('#visible-count').text(visibleCount);
        $('#total-count').text(totalCount);
       
        // 调试信息
        console.log('更新统计 - 可见:', visibleCount, '总数:', totalCount);
     }
     }
   
    // 调试:输出初始状态
    console.log('筛选系统已初始化');
    console.log('找到角色卡片数量:', $('.character-card').length);
    console.log('找到筛选按钮数量:', $('.filter-btn').length);
});
});


// 卡牌系统功能
/* 卡牌 */
(function() {
(function() {
     // 防止重复初始化
     // 防止重复初始化

2025年9月27日 (六) 21:28的版本

/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */

/* 切换标签 */
(function() {
    'use strict';
    
    function initTabSwitcher() {
        var tabContainers = document.querySelectorAll('.resp-tabs');
        
        tabContainers.forEach(function(container) {
            var tabButtons = container.querySelectorAll('.czn-list-style');
            if (tabButtons.length === 0) return;
            
            // 检测模式
            var tabContents = container.querySelectorAll('.resp-tab-content');
            var portraitImages = document.querySelectorAll('.portrait-image');
            
            // 初始化
            tabButtons.forEach(function(button, index) {
                button.classList.toggle('active', index === 0);
            });
            
            if (tabContents.length > 0) {
                tabContents.forEach(function(content, index) {
                    content.style.display = index === 0 ? 'block' : 'none';
                });
            }
            
            if (portraitImages.length > 0) {
                portraitImages.forEach(function(image, index) {
                    image.style.display = index === 0 ? 'block' : 'none';
                });
            }
            
            // 点击事件
            tabButtons.forEach(function(button, index) {
                button.addEventListener('click', function(e) {
                    e.preventDefault();
                    
                    // 更新标签状态
                    tabButtons.forEach(function(btn, i) {
                        btn.classList.toggle('active', i === index);
                    });
                    
                    // 传统模式切换
                    if (tabContents.length > 0) {
                        tabContents.forEach(function(content, i) {
                            content.style.display = i === index ? 'block' : 'none';
                        });
                    }
                    
                    // 立绘模式切换
                    if (portraitImages.length > 0) {
                        portraitImages.forEach(function(image) {
                            image.style.display = 'none';
                        });
                        var targetImage = document.querySelector('.portrait-image[data-index="' + index + '"]');
                        if (targetImage) {
                            targetImage.style.display = 'block';
                        }
                    }
                });
            });
        });
    }
    
    // 初始化
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initTabSwitcher);
    } else {
        initTabSwitcher();
    }
})();

/* 战斗员筛选 */
$(function() {
    // 初始化筛选系统
    function initFilterSystem() {
        // 为所有战斗员卡片添加数据属性
        $('.战斗员卡片').each(function() {
            var $card = $(this);
            var name = $card.find('.战斗员名称').text();
            var rarity = $card.find('[class*="rarity-"]').attr('class').match(/rarity-(\S+)/)[1];
            var profession = $card.find('img[src*="icon_职业"]').attr('src').match(/icon_职业_(.+?)\.png/)[1];
            var attribute = $card.find('img[src*="icon_属性"]').attr('src').match(/icon_属性_(.+?)\.png/)[1];
            
            $card.attr({
                'data-name': name,
                'data-rarity': rarity,
                'data-profession': profession,
                'data-attribute': attribute
            });
        });
        
        // 存储当前筛选状态
        var activeFilters = {};
        
        // 筛选按钮点击事件
        $('.filter-button').on('click', function() {
            var $button = $(this);
            var group = $button.data('filter-group');
            var value = $button.data('filter-value');
            
            // 切换按钮状态
            if (group == '0' && value == '0') {
                // 查看全部按钮
                $('.filter-button').removeClass('active');
                $button.addClass('active');
                activeFilters = {};
            } else {
                // 其他筛选按钮
                $('.filter-button[data-filter-group="0"]').removeClass('active');
                
                // 同组内只能选择一个
                $('.filter-button[data-filter-group="' + group + '"]').removeClass('active');
                
                if (activeFilters[group] === value) {
                    // 如果点击已激活的按钮,则取消选择
                    delete activeFilters[group];
                } else {
                    // 激活新的筛选
                    $button.addClass('active');
                    activeFilters[group] = value;
                }
                
                // 如果没有任何筛选项,激活"查看全部"
                if (Object.keys(activeFilters).length === 0) {
                    $('.filter-button[data-filter-group="0"]').addClass('active');
                }
            }
            
            // 应用筛选
            applyFilters();
        });
        
        // 应用筛选函数
        function applyFilters() {
            $('.战斗员卡片').each(function() {
                var $card = $(this);
                var shouldShow = true;
                
                // 检查每个激活的筛选条件
                for (var group in activeFilters) {
                    var filterValue = activeFilters[group];
                    var cardValue = '';
                    
                    // 根据组号获取对应的卡片属性
                    switch(group) {
                        case '1': // 稀有度
                            cardValue = $card.data('rarity');
                            break;
                        case '2': // 职业
                            cardValue = $card.data('profession');
                            break;
                        case '3': // 属性
                            cardValue = $card.data('attribute');
                            break;
                        // 可以继续添加更多筛选组
                        default:
                            cardValue = $card.data('filter-' + group);
                    }
                    
                    if (cardValue !== filterValue) {
                        shouldShow = false;
                        break;
                    }
                }
                
                // 显示或隐藏卡片
                if (shouldShow) {
                    $card.fadeIn(200);
                } else {
                    $card.fadeOut(200);
                }
            });
            
            // 更新显示数量
            updateCount();
        }
        
        // 更新显示数量
        function updateCount() {
            var visibleCount = $('.战斗员卡片:visible').length;
            var totalCount = $('.战斗员卡片').length;
            
            if ($('#filter-count').length === 0) {
                $('.filter-container').prepend('<div id="filter-count"></div>');
            }
            
            $('#filter-count').text('显示 ' + visibleCount + ' / ' + totalCount + ' 个战斗员');
        }
        
        // 初始化时激活"查看全部"按钮
        $('.filter-button[data-filter-group="0"]').addClass('active');
        updateCount();
    }
    
    // 页面加载完成后初始化
    if ($('.filter-button').length > 0) {
        initFilterSystem();
    }
});

/* 卡牌 */
(function() {
    // 防止重复初始化
    if (window.cardSystemInitialized) return;
    window.cardSystemInitialized = true;
    
    // 缓存DOM元素
    var overlayCache = null;
    var containerCache = null;
    
    // 保存当前卡牌信息,用于返回
    var currentCardInfo = null;
    
    // 创建遮罩层和容器(只创建一次)
    function createCardOverlay() {
        if (overlayCache && containerCache) {
            return { overlay: overlayCache, container: containerCache };
        }
        
        // 创建遮罩
        var overlay = document.createElement('div');
        overlay.id = 'card-overlay';
        overlay.style.cssText = 'display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.8); z-index: 9999; overflow-y: auto;';
        
        // 创建容器
        var container = document.createElement('div');
        container.id = 'card-display-container';
        // 修复:使用 relative 定位,避免左上角显示问题
        container.style.cssText = 'position: relative; min-height: 100vh; padding: 40px 20px; display: flex; align-items: center; justify-content: center;';
        
        overlay.appendChild(container);
        document.body.appendChild(overlay);
        
        // 点击遮罩关闭
        overlay.addEventListener('click', function(e) {
            if (e.target === overlay) {
                closeCardDisplay();
            }
        });
        
        overlayCache = overlay;
        containerCache = container;
        
        return { overlay: overlay, container: container };
    }
    
    // 创建关闭按钮
    function createCloseButton() {
        var closeBtn = document.createElement('div');
        closeBtn.style.cssText = 'position: fixed; top: 20px; right: 20px; width: 40px; height: 40px; background: rgba(255,255,255,0.1); border: 2px solid white; border-radius: 50%; cursor: pointer; display: flex; align-items: center; justify-content: center; z-index: 10001; transition: all 0.3s;';
        closeBtn.innerHTML = '<span style="color: white; font-size: 24px; font-weight: bold; line-height: 1;">×</span>';
        closeBtn.onmouseover = function() { 
            this.style.background = 'rgba(255,255,255,0.2)'; 
            this.style.transform = 'scale(1.1)';
        };
        closeBtn.onmouseout = function() { 
            this.style.background = 'rgba(255,255,255,0.1)'; 
            this.style.transform = 'scale(1)';
        };
        closeBtn.onclick = function() {
            closeCardDisplay();
        };
        return closeBtn;
    }
    
    // 关闭卡牌展示
    function closeCardDisplay() {
        var overlay = document.getElementById('card-overlay');
        if (overlay) {
            overlay.style.display = 'none';
            var container = overlay.querySelector('#card-display-container');
            if (container) {
                container.innerHTML = '';
            }
        }
        currentCardInfo = null; // 清空当前卡牌信息
    }
    
    // 缓存API调用结果
    var apiCache = {};
    
    // 获取卡牌HTML(通过API调用模块)
    function fetchCardHTML(character, cardName, deckType, callback) {
        var cacheKey = character + '|' + cardName + '|' + (deckType || '');
        
        // 检查缓存
        if (apiCache[cacheKey]) {
            callback(apiCache[cacheKey]);
            return;
        }
        
        var api = new mw.Api();
        var wikitext = '{{#invoke:卡牌|main|' + character + '|' + cardName + '|' + (deckType || '') + '}}';
        
        api.parse(wikitext).done(function(html) {
            apiCache[cacheKey] = html; // 缓存结果
            callback(html);
        }).fail(function() {
            callback('<div style="color: white;">加载失败</div>');
        });
    }
    
    // 放大显示卡牌
    function showEnlargedCard(cardElement) {
        var elements = createCardOverlay();
        var container = elements.container;
        var cardName = cardElement.dataset.cardName;
        var character = cardElement.dataset.character;
        var deckType = cardElement.dataset.deckType;
        var derivedCards = cardElement.dataset.derivedCards;
        
        // 保存当前卡牌信息
        currentCardInfo = {
            element: cardElement,
            cardName: cardName,
            character: character,
            deckType: deckType,
            derivedCards: derivedCards
        };
        
        // 重置容器样式
        container.style.cssText = 'position: relative; min-height: 100vh; padding: 40px 20px; display: flex; align-items: center; justify-content: center;';
        
        // 创建内容包装器
        var contentWrapper = document.createElement('div');
        contentWrapper.style.cssText = 'display: flex; align-items: center; gap: 20px; position: relative;';
        
        // 创建主卡牌容器
        var mainCardContainer = document.createElement('div');
        mainCardContainer.style.cssText = 'position: relative; width: 336px; height: 460px; display: flex; align-items: center; justify-content: center;';
        
        // 克隆并放大主卡牌
        var enlargedCard = cardElement.cloneNode(true);
        
        // 修复放大卡牌的样式
        var cardInner = document.createElement('div');
        cardInner.style.cssText = 'transform: scale(2); position: relative;';
        cardInner.appendChild(enlargedCard);
        
        // 确保卡牌正确显示
        enlargedCard.style.width = '168px';
        enlargedCard.style.height = '230px';
        enlargedCard.style.cursor = 'default';
        enlargedCard.style.position = 'relative';
        enlargedCard.style.display = 'block';
        enlargedCard.onclick = null;
        
        mainCardContainer.appendChild(cardInner);
        
        // 处理衍生卡牌
        if (derivedCards && derivedCards.trim() !== '') {
            var derivedCardsList = derivedCards.split('、');
            
            // 创建左侧容器
            var leftContainer = document.createElement('div');
            leftContainer.style.cssText = 'display: flex; flex-direction: column; gap: 15px; align-items: flex-end;';
            
            if (derivedCardsList.length > 1) {
                // 多张衍生卡牌,添加查看所有按钮
                var viewAllBtn = document.createElement('div');
                viewAllBtn.style.cssText = 'padding: 10px 20px; background: linear-gradient(135deg, #4a90e2, #357abd); color: white; border-radius: 6px; cursor: pointer; white-space: nowrap; font-weight: bold; box-shadow: 0 2px 8px rgba(0,0,0,0.3); transition: transform 0.2s;';
                viewAllBtn.textContent = '查看所有衍生卡牌';
                viewAllBtn.onmouseover = function() { this.style.transform = 'scale(1.05)'; };
                viewAllBtn.onmouseout = function() { this.style.transform = 'scale(1)'; };
                viewAllBtn.onclick = function() {
                    showAllDerivedCards(character, derivedCardsList);
                };
                leftContainer.appendChild(viewAllBtn);
            }
            
            // 显示第一张衍生卡牌
            var firstDerivedCard = document.createElement('div');
            firstDerivedCard.id = 'derived-cards-display';
            firstDerivedCard.style.cssText = 'display: flex; align-items: center;';
            
            fetchCardHTML(character, derivedCardsList[0].trim(), '', function(html) {
                firstDerivedCard.innerHTML = html;
                var cards = firstDerivedCard.querySelectorAll('.game-card');
                cards.forEach(function(card) {
                    card.style.cursor = 'default';
                    card.onclick = null;
                });
            });
            
            leftContainer.appendChild(firstDerivedCard);
            contentWrapper.appendChild(leftContainer);
        }
        
        contentWrapper.appendChild(mainCardContainer);
        
        // 创建按钮容器(放在主卡牌下方)
        var buttonsContainer = document.createElement('div');
        buttonsContainer.style.cssText = 'position: absolute; bottom: -60px; left: 50%; transform: translateX(-50%); display: flex; gap: 15px; z-index: 10; white-space: nowrap;';
        
        // 预加载按钮,避免延迟
        checkCardVariants(character, cardName, function(variants) {
            if (variants.lingguang) {
                var lingguangBtn = document.createElement('div');
                lingguangBtn.style.cssText = 'padding: 10px 30px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border-radius: 6px; cursor: pointer; font-weight: bold; box-shadow: 0 2px 8px rgba(0,0,0,0.3); transition: transform 0.2s; white-space: nowrap; min-width: 120px; text-align: center;';
                lingguangBtn.textContent = '灵光一闪';
                lingguangBtn.onmouseover = function() { this.style.transform = 'scale(1.05)'; };
                lingguangBtn.onmouseout = function() { this.style.transform = 'scale(1)'; };
                lingguangBtn.onclick = function() {
                    showVariantCards(character, cardName, '灵光一闪');
                };
                buttonsContainer.appendChild(lingguangBtn);
            }
            
            if (variants.shenguang) {
                var shenguangBtn = document.createElement('div');
                shenguangBtn.style.cssText = 'padding: 10px 30px; background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%); color: white; border-radius: 6px; cursor: pointer; font-weight: bold; box-shadow: 0 2px 8px rgba(0,0,0,0.3); transition: transform 0.2s; white-space: nowrap; min-width: 120px; text-align: center;';
                shenguangBtn.textContent = '神之一闪';
                shenguangBtn.onmouseover = function() { this.style.transform = 'scale(1.05)'; };
                shenguangBtn.onmouseout = function() { this.style.transform = 'scale(1)'; };
                shenguangBtn.onclick = function() {
                    showVariantCards(character, cardName, '神之一闪');
                };
                buttonsContainer.appendChild(shenguangBtn);
            }
        });
        
        mainCardContainer.appendChild(buttonsContainer);
        
        container.innerHTML = '';
        container.appendChild(contentWrapper);
        
        // 添加关闭按钮
        container.appendChild(createCloseButton());
        
        elements.overlay.style.display = 'block';
    }
    
    // 显示所有衍生卡牌
    function showAllDerivedCards(character, derivedCardsList) {
        var overlay = document.getElementById('card-overlay');
        var container = document.getElementById('card-display-container');
        
        // 清空当前内容
        container.innerHTML = '';
        container.style.cssText = 'position: relative; padding: 40px; min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center;';
        
        // 创建标题
        var title = document.createElement('div');
        title.style.cssText = 'color: white; font-size: 28px; font-weight: bold; margin-bottom: 30px; text-align: center;';
        title.textContent = '衍生卡牌';
        container.appendChild(title);
        
        // 创建卡牌容器
        var cardsContainer = document.createElement('div');
        cardsContainer.style.cssText = 'display: flex; flex-wrap: wrap; gap: 15px; justify-content: center; max-width: 1200px;';
        
        // 加载所有衍生卡牌
        var uniqueCards = [...new Set(derivedCardsList.map(function(name) { return name.trim(); }))];
        var loadedCount = 0;
        
        uniqueCards.forEach(function(cardName) {
            fetchCardHTML(character, cardName, '', function(html) {
                var cardWrapper = document.createElement('div');
                cardWrapper.innerHTML = html;
                var cards = cardWrapper.querySelectorAll('.game-card');
                cards.forEach(function(card) {
                    card.style.cursor = 'default';
                    card.onclick = null;
                    cardsContainer.appendChild(card);
                });
                
                loadedCount++;
                if (loadedCount === uniqueCards.length) {
                    // 所有卡牌加载完成
                }
            });
        });
        
        container.appendChild(cardsContainer);
        
        // 添加返回按钮(返回到放大的卡牌页面)
        var backBtn = document.createElement('div');
        backBtn.style.cssText = 'position: fixed; top: 20px; left: 20px; padding: 10px 20px; background: linear-gradient(135deg, #4a90e2, #357abd); color: white; border-radius: 6px; cursor: pointer; font-weight: bold; box-shadow: 0 2px 8px rgba(0,0,0,0.3); z-index: 10001;';
        backBtn.textContent = '← 返回';
        backBtn.onclick = function() {
            // 返回到放大的卡牌页面
            if (currentCardInfo && currentCardInfo.element) {
                showEnlargedCard(currentCardInfo.element);
            }
        };
        container.appendChild(backBtn);
        
        // 添加关闭按钮
        container.appendChild(createCloseButton());
    }
    
    // 检查卡牌变体(优化版)
    function checkCardVariants(character, cardName, callback) {
        var variants = { lingguang: false, shenguang: false };
        var checkCount = 0;
        var totalChecks = 2;
        
        function checkComplete() {
            checkCount++;
            if (checkCount === totalChecks) {
                callback(variants);
            }
        }
        
        // 并行检查两种变体
        fetchCardHTML(character, cardName, '灵光一闪', function(html) {
            if (html && !html.includes('找不到卡组')) {
                variants.lingguang = true;
            }
            checkComplete();
        });
        
        fetchCardHTML(character, cardName, '神之一闪', function(html) {
            if (html && !html.includes('找不到卡组')) {
                variants.shenguang = true;
            }
            checkComplete();
        });
    }
    
    // 显示变体卡牌
    function showVariantCards(character, cardName, variantType) {
        var overlay = document.getElementById('card-overlay');
        var container = document.getElementById('card-display-container');
        
        // 重置容器样式
        container.style.cssText = 'position: relative; padding: 40px; min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center;';
        container.innerHTML = '';
        
        // 创建标题
        var title = document.createElement('div');
        title.style.cssText = 'color: white; font-size: 28px; font-weight: bold; margin-bottom: 30px; text-align: center; background: linear-gradient(135deg, #667eea, #764ba2); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;';
        title.textContent = cardName + ' - ' + variantType;
        container.appendChild(title);
        
        // 创建卡牌容器(增大宽度以容纳5张卡牌)
        var cardsContainer = document.createElement('div');
        cardsContainer.style.cssText = 'display: flex; flex-wrap: nowrap; gap: 15px; justify-content: center; max-width: 1200px; overflow-x: auto; padding: 20px;';
        
        // 加载变体卡牌
        fetchCardHTML(character, cardName, variantType, function(html) {
            cardsContainer.innerHTML = html;
            
            // 移除所有卡牌的点击事件
            var cards = cardsContainer.querySelectorAll('.game-card');
            cards.forEach(function(card) {
                card.style.cursor = 'default';
                card.onclick = null;
                card.style.flexShrink = '0'; // 防止卡牌缩小
            });
        });
        
        container.appendChild(cardsContainer);
        
        // 添加返回按钮(返回到放大的卡牌页面)
        var backBtn = document.createElement('div');
        backBtn.style.cssText = 'position: fixed; top: 20px; left: 20px; padding: 10px 20px; background: linear-gradient(135deg, #4a90e2, #357abd); color: white; border-radius: 6px; cursor: pointer; font-weight: bold; box-shadow: 0 2px 8px rgba(0,0,0,0.3); z-index: 10001; transition: transform 0.2s;';
        backBtn.textContent = '← 返回';
        backBtn.onmouseover = function() { this.style.transform = 'scale(1.05)'; };
        backBtn.onmouseout = function() { this.style.transform = 'scale(1)'; };
        backBtn.onclick = function() {
            // 返回到放大的卡牌页面
            if (currentCardInfo && currentCardInfo.element) {
                showEnlargedCard(currentCardInfo.element);
            }
        };
        container.appendChild(backBtn);
        
        // 添加关闭按钮
        container.appendChild(createCloseButton());
    }
    
    // 初始化卡牌点击事件
    function initCardClickEvents() {
        // 使用事件委托
        document.addEventListener('click', function(e) {
            var card = e.target.closest('.game-card');
            if (card && !card.closest('#card-overlay')) {
                e.preventDefault();
                e.stopPropagation();
                showEnlargedCard(card);
            }
        });
    }
    
    // 页面加载完成后初始化
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', function() {
            initCardClickEvents();
        });
    } else {
        initCardClickEvents();
    }
})();