using Milimoe.FunGame.Core.Api.Transmittal; using Milimoe.FunGame.Core.Api.Utility; using Milimoe.FunGame.Core.Controller; using Milimoe.FunGame.Core.Interface.Addons; namespace Milimoe.FunGame.Core.Library.Common.Addon { public abstract class WebAPIPlugin : IAddon, IServerAddon, IAddonController { /// /// 插件名称 /// public abstract string Name { get; } /// /// 插件描述 /// public abstract string Description { get; } /// /// 插件版本 /// public abstract string Version { get; } /// /// 插件作者 /// public abstract string Author { get; } /// /// 包含了一些常用方法的控制器 /// public BaseAddonController Controller { get => _Controller ?? throw new NotImplementedException(); set => _Controller = value; } /// /// 控制器内部变量 /// private BaseAddonController? _Controller; /// /// 全局数据库连接器 /// public SQLHelper? SQLHelper => Singleton.Get(); /// /// 全局邮件发送器 /// public MailSender? MailSender => Singleton.Get(); /// /// 加载标记 /// 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; } } }