using Milimoe.FunGame.Core.Controller; using Milimoe.FunGame.Core.Interface.Addons; namespace Milimoe.FunGame.Core.Library.Common.Addon { public abstract class WebAPIPlugin : IAddon, IAddonController { /// /// 插件名称 /// public abstract string Name { get; } /// /// 插件描述 /// public abstract string Description { get; } /// /// 插件版本 /// public abstract string Version { get; } /// /// 插件作者 /// public abstract string Author { get; } /// /// 包含了一些常用方法的控制器 /// public ServerAddonController Controller { get => _Controller ?? throw new NotImplementedException(); internal set => _Controller = value; } /// /// base控制器 /// BaseAddonController IAddonController.Controller { get => Controller; set => _Controller = (ServerAddonController?)value; } /// /// 控制器内部变量 /// private ServerAddonController? _Controller; /// /// 加载标记 /// private bool _isLoaded = false; /// /// 加载插件 /// public bool Load(params object[] objs) { if (_isLoaded) { return false; } // BeforeLoad可以阻止加载此插件 if (BeforeLoad(objs)) { // 插件加载后,不允许再次加载此插件 _isLoaded = true; } return _isLoaded; } /// /// 接收服务器控制台的输入 /// /// public abstract void ProcessInput(string input); /// /// 插件完全加载后需要做的事 /// public virtual void AfterLoad(params object[] objs) { // override } /// /// 允许返回false来阻止加载此插件 /// /// protected virtual bool BeforeLoad(params object[] objs) { return true; } } }