#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
快速GUI测试
验证主程序中的GUI修复是否有效
"""

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

import sys
from direct.showbase.ShowBase import ShowBase
from direct.gui.DirectGui import *
from direct.gui.OnscreenText import OnscreenText
from panda3d.core import *

# 配置Panda3D
loadPrcFileData("", """
    win-size 800 600
    window-title Quick GUI Test
""")

class QuickGUITest(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)
        
        print("=== 快速GUI测试 ===")
        
        # 设置背景色
        self.setBackgroundColor(0.2, 0.2, 0.3)
        
        # 调整相机位置
        self.cam.setPos(0, -10, 5)
        self.cam.lookAt(0, 0, 0)
        
        self.gui_elements = []
        
        # 尝试加载中文字体
        try:
            self.chinese_font = self.loader.loadFont('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc')
        except:
            self.chinese_font = None
        
        # 创建标题
        self.title = OnscreenText(
            text="快速GUI测试 - 验证修复效果",
            pos=(0, 0.9),
            scale=0.08,
            fg=(1, 1, 1, 1),
            align=TextNode.ACenter,
            font=self.chinese_font if self.chinese_font else None
        )
        
        # 立即创建GUI元素测试
        self.createTestGUI()
        
    def createTestGUI(self):
        """创建测试GUI元素"""
        print("\n创建测试GUI元素...")
        
        # 使用和主程序相同的方法创建GUI
        # 测试不同的坐标值
        test_coords = [
            (0, 0, 0),      # 中心
            (-10, 0, 0),    # 左侧
            (10, 0, 0),     # 右侧
            (0, 0, 10),     # 上方
            (0, 0, -10),    # 下方
        ]
        
        print("使用新的0.05缩放比例...")
        
        # 创建按钮测试
        for i, pos in enumerate(test_coords):
            gui_pos = (pos[0] * 0.05, 0, pos[2] * 0.05)
            
            button = DirectButton(
                text=f"按钮{i+1}",
                pos=gui_pos,
                scale=0.08,
                frameColor=(0.2, 0.6, 0.8, 1),
                text_font=self.chinese_font if self.chinese_font else None,
                rolloverSound=None,
                clickSound=None
            )
            
            self.gui_elements.append(button)
            print(f"按钮{i+1}: 逻辑坐标{pos} -> 屏幕坐标{gui_pos}")
        
        # 创建标签测试
        label_coords = [
            (0, 0, -15),    # 下方
            (-15, 0, -5),   # 左下
            (15, 0, -5),    # 右下
        ]
        
        for i, pos in enumerate(label_coords):
            gui_pos = (pos[0] * 0.05, 0, pos[2] * 0.05)
            
            label = DirectLabel(
                text=f"标签{i+1}",
                pos=gui_pos,
                scale=0.06,
                frameColor=(0, 0, 0, 0),
                text_fg=(1, 1, 1, 1),
                text_font=self.chinese_font if self.chinese_font else None
            )
            
            self.gui_elements.append(label)
            print(f"标签{i+1}: 逻辑坐标{pos} -> 屏幕坐标{gui_pos}")
        
        # 创建3D元素作为对比
        textNode = TextNode('3d-text')
        textNode.setText("3D文本对比")
        textNode.setAlign(TextNode.ACenter)
        if self.chinese_font:
            textNode.setFont(self.chinese_font)
        
        text3D = self.render.attachNewNode(textNode)
        text3D.setPos(0, 5, 2)
        text3D.setScale(0.5)
        text3D.setColor(1, 1, 0, 1)
        text3D.setBillboardAxis()
        
        print(f"\n创建完成！GUI元素总数: {len(self.gui_elements)}")
        print("如果你能看到按钮和标签，说明修复成功！")
        print("如果只能看到黄色的3D文本，说明2D GUI仍有问题。")

def main():
    """主函数"""
    print("启动快速GUI测试...")
    
    # 创建并运行应用
    app = QuickGUITest()
    app.run()

if __name__ == "__main__":
    main() 