"""
群体智能插件
实现Boids群体智能算法
"""

from plugins.plugin_manager import BasePlugin
from .swarm_manager import SwarmManager

class Plugin(BasePlugin):
    """
    群体智能插件
    """
    
    def __init__(self, plugin_manager, name):
        super().__init__(plugin_manager, name)
        # 设置插件配置
        self.config = {
            "version": "1.0.0",
            "author": "AI Assistant",
            "description": "实现Boids群体智能算法的插件"
        }
        self.swarm_manager = None
        
    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.swarm_manager = SwarmManager(self.plugin_manager.world)
        
        # 创建示例群体
        self.swarm_manager.create_example_swarm()
        
        # 注册事件处理器
        self.plugin_manager.world.accept("f1", self._on_f1_pressed)
        
        return True
        
    def disable(self) -> bool:
        """
        禁用插件
        """
        if not super().disable():
            return False
            
        print(f"禁用插件: {self.name}")
        
        # 清理群体
        if self.swarm_manager:
            self.swarm_manager.cleanup()
            
        # 移除事件处理器
        self.plugin_manager.world.ignore("f1")
        
        return True
        
    def finalize(self):
        """
        清理插件资源
        """
        print(f"清理插件资源: {self.name}")
        # 在这里执行最终清理逻辑
        
    def get_info(self) -> dict:
        """
        获取插件信息
        """
        info = super().get_info()
        info.update({
            "version": self.config.get("version", "1.0.0"),
            "author": self.config.get("author", "Unknown"),
            "description": self.config.get("description", "Base plugin class")
        })
        return info
        
    def _on_f1_pressed(self):
        """
        F1按键处理函数
        """
        print("群体智能插件: F1按键被按下")
        if self.swarm_manager:
            self.swarm_manager.toggle_pause()