95 lines
2.5 KiB
Python
95 lines
2.5 KiB
Python
"""
|
|
群体智能插件
|
|
实现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() |