"""
示例插件
演示如何创建一个简单的插件
"""

from plugins.plugin_manager import BasePlugin

class Plugin(BasePlugin):
    """
    示例插件
    演示如何创建一个简单的插件
    """
    
    def __init__(self, plugin_manager, name):
        super().__init__(plugin_manager, name)
        self.config = {
            "version": "1.0.0",
            "author": "EG Team",
            "description": "示例插件，演示插件基本功能"
        }
        
    def initialize(self) -> bool:
        """
        初始化插件
        """
        print(f"初始化示例插件: {self.name}")
        return True
        
    def enable(self) -> bool:
        """
        启用插件
        """
        if not super().enable():
            return False
            
        print(f"启用示例插件: {self.name}")
        
        # 注册一个示例事件处理器
        self.plugin_manager.world.accept("f10", self.on_f10_pressed)
        
        # 在场景中添加一个示例文本
        self.example_text = self.plugin_manager.world.render.attachNewNode("example_text")
        self.example_text.setPos(0, 0, 5)
        
        # 如果有GUI管理器，添加一个示例按钮
        if hasattr(self.plugin_manager.world, 'gui_manager') and self.plugin_manager.world.gui_manager:
            self.example_button = self.plugin_manager.world.gui_manager.createGUIButton(
                pos=(0.5, 0, 0.9), 
                text="示例插件按钮", 
                size=0.08
            )
            # 注册按钮点击事件
            self.plugin_manager.world.accept("example_button_click", self.on_button_click)
            
        return True
        
    def disable(self) -> bool:
        """
        禁用插件
        """
        if not super().disable():
            return False
            
        print(f"禁用示例插件: {self.name}")
        
        # 移除事件处理器
        self.plugin_manager.world.ignore("f10")
        
        # 清理示例文本
        if hasattr(self, 'example_text'):
            self.example_text.removeNode()
            
        # 清理示例按钮
        if hasattr(self, 'example_button'):
            self.plugin_manager.world.gui_manager.deleteGUIElement(self.example_button)
            self.plugin_manager.world.ignore("example_button_click")
            
        return True
        
    def finalize(self):
        """
        清理插件资源
        """
        print(f"清理示例插件资源: {self.name}")
        
    def on_f10_pressed(self):
        """
        F10按键事件处理器
        """
        print("示例插件: F10按键被按下")
        
    def on_button_click(self):
        """
        按钮点击事件处理器
        """
        print("示例插件: 按钮被点击")